package com.threeox.commonlibrary.ui.view.inter.engine.listmodel;

import android.content.Context;
import android.view.View;
import android.widget.AdapterView;

import com.threeox.commonlibrary.entity.engine.request.base.BaseRequestMsg;
import com.threeox.commonlibrary.ui.view.engineview.listmodel.ListModelBaseView;
import com.threeox.commonlibrary.ui.view.inter.engine.base.IBaseExtend;

import java.util.List;

/**
 *
 * @ClassName: IListModelExtend
 *
 * @Description: Todo(列表模型的扩展类)
 *
 * @author 赵屈犇
 *
 * @date 创建时间:2016/12/22 14:23
 *
 * @version 1.0
 */
public interface IListModelExtend<T> extends IBaseExtend {

	/**
	 * 初始化
	 *
	 * @param context
	 * @param listModelBaseView
     * @return
     */
	boolean init(Context context, ListModelBaseView listModelBaseView);

	/**
	 * 下拉操作
	 * 
	 * @return false:拦截 true:不拦截
	 */
	boolean onDownPullRefresh();

	/**
	 * 上啦加载更多事件
	 * 
	 * @return false:拦截 true:不拦截
	 */
	boolean onLoadingMore();

	/**
	 * 执行网络请求操作
	 * 
	 * @param isFirst
	 * @param requestMsg
	 * @return false:拦截 true:不拦截
	 */
	boolean exec(boolean isFirst, BaseRequestMsg requestMsg);

    /**
     * 当返回的数据不为集合时解析
     *
     * @param datas
     */
    List onParseData(T datas);

	/**
	 * 解析数据之前调用的接口
	 * 
	 * @return false:拦截 true:不拦截
	 */
	boolean onBeforeParseData(List<T> datas);

	/**
	 * 解析数据之后调用的接口
	 *
	 * @param isFirst
	 * @param datas
	 */
	void onAfterParseData(boolean isFirst, List<T> datas);

	/**
	 * 拦截获取Item数据
	 *
	 * @param position
	 * @return
	 */
	Object interceptGetItemData(int position);

	/**
	 *
	 * 设置Item点击事件
	 *
	 * @param arg0
	 * @param arg1
	 * @param position
	 * @param arg3
	 * @param data
	 */
	void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3, T data);

	/**
	 * 长按事件
	 *
	 * @param arg0
	 * @param arg1
	 * @param position
	 * @param arg3
	 * @param obj
	 * @return
	 */
	Boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3, T obj);
}
